package com.example.lemieripetizioni;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.lemieripetizioni.adapter.RipetizioneListAdapterWithCache;
import com.lemieripetizioni.datamodel.Ripetizione;
import com.lemieripetizioni.dbadapter.DbAdapter;

import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

public class LeMieRipetizioniFragment extends Fragment {
	/**
	 * The fragment argument representing the section number for this fragment.
	 */
	public static final String ARG_SECTION_NUMBER = "section_number";

	static final int DATE_DIALOG_ID = 0;

	private ListView listViewRipetizioni;
	List<Ripetizione> listRipetizioni;
	private DbAdapter dbHelper;
	private Cursor cursor;
	private RipetizioneListAdapterWithCache ripetizioneListAdapterWithCache;

	private Context ctx;

	int textlength = 0;

	private static final String TAG = "LeMieRipetizioni - ";

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		
		View rootView = inflater.inflate(R.layout.le_mie_ripetizioni, container, false);

		// Find the ListView resource.
		listViewRipetizioni = (ListView) rootView.findViewById(R.id.le_mie_ripetizioni_list_result);

		// When item is tapped, toggle checked properties of CheckBox and
		// Planet.
		listViewRipetizioni.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View item, int position, long id) {
				Toast.makeText(getActivity(), "Click ListItem Number " + position, Toast.LENGTH_LONG).show();
			}
		});

		ctx = this.getActivity();

		listRipetizioni = new ArrayList<Ripetizione>();

		Date currDate = new Date();
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(currDate);
		calendar.add(Calendar.MONTH, 1);

		// get all prof
		getRipetizioniByDate();

		// Set our custom array adapter as the ListView's adapter.
		ripetizioneListAdapterWithCache = new RipetizioneListAdapterWithCache(this.getActivity(),
				R.layout.le_mie_ripetizioni_list_result_item, listRipetizioni, this.getActivity());
		listViewRipetizioni.setAdapter(ripetizioneListAdapterWithCache);

		return rootView;
	}
	
	public void getRipetizioniByDate() {
		listRipetizioni.clear();
		dbHelper = new DbAdapter(this.getActivity());
		dbHelper.open();

		// TODO da rimuovere mock per inserimento professori in lista
		mockInsertRipetizioniList();

		cursor = dbHelper.fetchAllRipetizioneEntry();

		while (cursor.moveToNext()) {

			String data = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_DATA));
			String oraInizio = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_ORA_INIZIO));
			String oraFine = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_ORA_FINE));
			String costoOrario = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_COSTO_ORARIO));
			Ripetizione r = new Ripetizione(data, oraInizio, oraFine, costoOrario);

			Log.d(TAG, r.toString());

			listRipetizioni.add(r);
		}

		dbHelper.close();
		cursor.close();
	}

	private void mockInsertRipetizioniList() {

		final Calendar c = Calendar.getInstance();
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH);
		int day = c.get(Calendar.DAY_OF_MONTH);

		String date_selected = String.valueOf(day) + "/" + String.format("%2s", String.valueOf(month + 1)).replace(' ', '0')
				+ "/" + String.valueOf(year);

		Ripetizione ripe_mock1 = new Ripetizione(date_selected, "11:00", "12:00", "15.00");
		Ripetizione ripe_mock2 = new Ripetizione(date_selected, "14:00", "16:00", "12.50");
		Ripetizione ripe_mock3 = new Ripetizione(date_selected, "09:00", "11:00", "10.00");

		dbHelper.createRipetizioneEntry(ripe_mock1);
		dbHelper.createRipetizioneEntry(ripe_mock2);
		dbHelper.createRipetizioneEntry(ripe_mock3);
	}	
}